home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML ConsoleMax.sea / XML ConsoleMax / Required / xalan.jar / org / apache / xalan / xpath / XNodeSet.class (.txt) < prev    next >
Encoding:
Java Class File  |  2000-04-12  |  7.2 KB  |  554 lines

  1. package org.apache.xalan.xpath;
  2.  
  3. import org.apache.xalan.xpath.xml.XMLParserLiaisonDefault;
  4. import org.w3c.dom.DocumentFragment;
  5. import org.w3c.dom.Node;
  6. import org.w3c.dom.NodeList;
  7. import org.w3c.dom.Text;
  8. import org.xml.sax.SAXException;
  9.  
  10. public class XNodeSet extends XObject {
  11.    public XNodeSet(NodeList var1) {
  12.       super(var1);
  13.    }
  14.  
  15.    public XNodeSet() {
  16.       super(new MutableNodeListImpl());
  17.    }
  18.  
  19.    public XNodeSet(Node var1) {
  20.       super(new MutableNodeListImpl());
  21.       if (var1 != null) {
  22.          ((MutableNodeList)super.m_obj).addNode(var1);
  23.       }
  24.  
  25.    }
  26.  
  27.    public int getType() {
  28.       return 4;
  29.    }
  30.  
  31.    private String getTypeString() {
  32.       return "#NODESET";
  33.    }
  34.  
  35.    double getNumberFromNode(Node var1) {
  36.       return XString.castToNum(getStringFromNode(var1));
  37.    }
  38.  
  39.    public double num() {
  40.       NodeList var1 = this.nodeset();
  41.       return var1.getLength() > 0 ? this.getNumberFromNode(var1.item(0)) : Double.NaN;
  42.    }
  43.  
  44.    public boolean bool() {
  45.       return this.nodeset().getLength() > 0;
  46.    }
  47.  
  48.    static String getStringFromNode(Node var0) {
  49.       switch (var0.getNodeType()) {
  50.          case 1:
  51.          case 9:
  52.             return XMLParserLiaisonDefault.getNodeData(var0);
  53.          case 2:
  54.          case 7:
  55.          case 8:
  56.             return var0.getNodeValue();
  57.          case 3:
  58.          case 4:
  59.             return ((Text)var0).getData();
  60.          case 5:
  61.          case 6:
  62.          default:
  63.             return XMLParserLiaisonDefault.getNodeData(var0);
  64.       }
  65.    }
  66.  
  67.    public String str() {
  68.       NodeList var1 = this.nodeset();
  69.       return var1.getLength() > 0 ? getStringFromNode(var1.item(0)) : "";
  70.    }
  71.  
  72.    public DocumentFragment rtree(XPathSupport var1) {
  73.       DocumentFragment var2 = var1.getDOMFactory().createDocumentFragment();
  74.       NodeList var3 = this.nodeset();
  75.       int var4 = var3.getLength();
  76.  
  77.       for(int var5 = 0; var5 < var4; ++var5) {
  78.          var2.appendChild(var3.item(var5).cloneNode(true));
  79.       }
  80.  
  81.       return var2;
  82.    }
  83.  
  84.    public NodeList nodeset() {
  85.       return (NodeList)super.m_obj;
  86.    }
  87.  
  88.    public MutableNodeList mutableNodeset() {
  89.       Object var1;
  90.       if (super.m_obj instanceof MutableNodeList) {
  91.          var1 = (MutableNodeList)super.m_obj;
  92.       } else {
  93.          var1 = new MutableNodeListImpl(this.nodeset());
  94.          super.m_obj = var1;
  95.       }
  96.  
  97.       return (MutableNodeList)var1;
  98.    }
  99.  
  100.    public boolean lessThan(XObject var1) throws SAXException {
  101.       boolean var2 = false;
  102.       int var3 = var1.getType();
  103.       if (var3 == 4) {
  104.          NodeList var4 = this.nodeset();
  105.          NodeList var5 = ((XNodeSet)var1).nodeset();
  106.          int var6 = var4.getLength();
  107.          int var7 = var5.getLength();
  108.  
  109.          for(int var8 = 0; var8 < var6; ++var8) {
  110.             String var9 = getStringFromNode(var4.item(var8));
  111.  
  112.             for(int var10 = 0; var10 < var7; ++var10) {
  113.                String var11 = getStringFromNode(var5.item(var10));
  114.                if (var9.compareTo(var11) < 0) {
  115.                   var2 = true;
  116.                   break;
  117.                }
  118.             }
  119.          }
  120.       } else if (var3 == 1) {
  121.          double var12 = this.bool() ? (double)1.0F : (double)0.0F;
  122.          double var18 = var1.num();
  123.          var2 = var12 < var18;
  124.       } else if (var3 == 2) {
  125.          NodeList var13 = this.nodeset();
  126.          int var16 = var13.getLength();
  127.          double var19 = var1.num();
  128.  
  129.          for(int var26 = 0; var26 < var16; ++var26) {
  130.             double var30 = this.getNumberFromNode(var13.item(var26));
  131.             if (var30 < var19) {
  132.                var2 = true;
  133.                break;
  134.             }
  135.          }
  136.       } else if (var3 == 5) {
  137.          double var14 = var1.num();
  138.          if (var14 != Double.NaN) {
  139.             NodeList var20 = this.nodeset();
  140.             int var23 = var20.getLength();
  141.  
  142.             for(int var27 = 0; var27 < var23; ++var27) {
  143.                double var31 = this.getNumberFromNode(var20.item(var27));
  144.                if (var31 < var14) {
  145.                   var2 = true;
  146.                   break;
  147.                }
  148.             }
  149.          } else {
  150.             NodeList var21 = this.nodeset();
  151.             int var24 = var21.getLength();
  152.             String var28 = var1.str();
  153.  
  154.             for(int var32 = 0; var32 < var24; ++var32) {
  155.                String var33 = getStringFromNode(var21.item(var32));
  156.                if (var33.compareTo(var28) < 0) {
  157.                   var2 = true;
  158.                   break;
  159.                }
  160.             }
  161.          }
  162.       } else if (var3 == 3) {
  163.          NodeList var15 = this.nodeset();
  164.          int var17 = var15.getLength();
  165.          String var22 = var1.str();
  166.  
  167.          for(int var25 = 0; var25 < var17; ++var25) {
  168.             String var29 = getStringFromNode(var15.item(var25));
  169.             if (var29.compareTo(var22) < 0) {
  170.                var2 = true;
  171.                break;
  172.             }
  173.          }
  174.       } else {
  175.          var2 = this.num() < var1.num();
  176.       }
  177.  
  178.       return var2;
  179.    }
  180.  
  181.    public boolean lessThanOrEqual(XObject var1) throws SAXException {
  182.       boolean var2 = false;
  183.       int var3 = var1.getType();
  184.       if (var3 == 4) {
  185.          NodeList var4 = this.nodeset();
  186.          NodeList var5 = ((XNodeSet)var1).nodeset();
  187.          int var6 = var4.getLength();
  188.          int var7 = var5.getLength();
  189.  
  190.          for(int var8 = 0; var8 < var6; ++var8) {
  191.             String var9 = getStringFromNode(var4.item(var8));
  192.  
  193.             for(int var10 = 0; var10 < var7; ++var10) {
  194.                String var11 = getStringFromNode(var5.item(var10));
  195.                if (var9.compareTo(var11) <= 0) {
  196.                   var2 = true;
  197.                   break;
  198.                }
  199.             }
  200.          }
  201.       } else if (var3 == 1) {
  202.          double var12 = this.bool() ? (double)1.0F : (double)0.0F;
  203.          double var18 = var1.num();
  204.          var2 = var12 <= var18;
  205.       } else if (var3 == 2) {
  206.          NodeList var13 = this.nodeset();
  207.          int var16 = var13.getLength();
  208.          double var19 = var1.num();
  209.  
  210.          for(int var26 = 0; var26 < var16; ++var26) {
  211.             double var30 = this.getNumberFromNode(var13.item(var26));
  212.             if (var30 <= var19) {
  213.                var2 = true;
  214.                break;
  215.             }
  216.          }
  217.       } else if (var3 == 5) {
  218.          double var14 = var1.num();
  219.          if (var14 != Double.NaN) {
  220.             NodeList var20 = this.nodeset();
  221.             int var23 = var20.getLength();
  222.  
  223.             for(int var27 = 0; var27 < var23; ++var27) {
  224.                double var31 = this.getNumberFromNode(var20.item(var27));
  225.                if (var31 <= var14) {
  226.                   var2 = true;
  227.                   break;
  228.                }
  229.             }
  230.          } else {
  231.             NodeList var21 = this.nodeset();
  232.             int var24 = var21.getLength();
  233.             String var28 = var1.str();
  234.  
  235.             for(int var32 = 0; var32 < var24; ++var32) {
  236.                String var33 = getStringFromNode(var21.item(var32));
  237.                if (var33.compareTo(var28) <= 0) {
  238.                   var2 = true;
  239.                   break;
  240.                }
  241.             }
  242.          }
  243.       } else if (var3 == 3) {
  244.          NodeList var15 = this.nodeset();
  245.          int var17 = var15.getLength();
  246.          String var22 = var1.str();
  247.  
  248.          for(int var25 = 0; var25 < var17; ++var25) {
  249.             String var29 = getStringFromNode(var15.item(var25));
  250.             if (var29.compareTo(var22) <= 0) {
  251.                var2 = true;
  252.                break;
  253.             }
  254.          }
  255.       } else {
  256.          var2 = this.num() <= var1.num();
  257.       }
  258.  
  259.       return var2;
  260.    }
  261.  
  262.    public boolean greaterThan(XObject var1) throws SAXException {
  263.       boolean var2 = false;
  264.       int var3 = var1.getType();
  265.       if (var3 == 4) {
  266.          NodeList var4 = this.nodeset();
  267.          NodeList var5 = ((XNodeSet)var1).nodeset();
  268.          int var6 = var4.getLength();
  269.          int var7 = var5.getLength();
  270.  
  271.          for(int var8 = 0; var8 < var6; ++var8) {
  272.             String var9 = getStringFromNode(var4.item(var8));
  273.  
  274.             for(int var10 = 0; var10 < var7; ++var10) {
  275.                String var11 = getStringFromNode(var5.item(var10));
  276.                if (var9.compareTo(var11) > 0) {
  277.                   var2 = true;
  278.                   break;
  279.                }
  280.             }
  281.          }
  282.       } else if (var3 == 1) {
  283.          double var12 = this.bool() ? (double)1.0F : (double)0.0F;
  284.          double var18 = var1.num();
  285.          var2 = var12 > var18;
  286.       } else if (var3 == 2) {
  287.          NodeList var13 = this.nodeset();
  288.          int var16 = var13.getLength();
  289.          double var19 = var1.num();
  290.  
  291.          for(int var26 = 0; var26 < var16; ++var26) {
  292.             double var30 = this.getNumberFromNode(var13.item(var26));
  293.             if (var30 > var19) {
  294.                var2 = true;
  295.                break;
  296.             }
  297.          }
  298.       } else if (var3 == 5) {
  299.          double var14 = var1.num();
  300.          if (var14 != Double.NaN) {
  301.             NodeList var20 = this.nodeset();
  302.             int var23 = var20.getLength();
  303.  
  304.             for(int var27 = 0; var27 < var23; ++var27) {
  305.                double var31 = this.getNumberFromNode(var20.item(var27));
  306.                if (var31 > var14) {
  307.                   var2 = true;
  308.                   break;
  309.                }
  310.             }
  311.          } else {
  312.             NodeList var21 = this.nodeset();
  313.             int var24 = var21.getLength();
  314.             String var28 = var1.str();
  315.  
  316.             for(int var32 = 0; var32 < var24; ++var32) {
  317.                String var33 = getStringFromNode(var21.item(var32));
  318.                if (var33.compareTo(var28) > 0) {
  319.                   var2 = true;
  320.                   break;
  321.                }
  322.             }
  323.          }
  324.       } else if (var3 == 3) {
  325.          NodeList var15 = this.nodeset();
  326.          int var17 = var15.getLength();
  327.          String var22 = var1.str();
  328.  
  329.          for(int var25 = 0; var25 < var17; ++var25) {
  330.             String var29 = getStringFromNode(var15.item(var25));
  331.             if (var29.compareTo(var22) > 0) {
  332.                var2 = true;
  333.                break;
  334.             }
  335.          }
  336.       } else {
  337.          var2 = this.num() > var1.num();
  338.       }
  339.  
  340.       return var2;
  341.    }
  342.  
  343.    public boolean greaterThanOrEqual(XObject var1) throws SAXException {
  344.       boolean var2 = false;
  345.       int var3 = var1.getType();
  346.       if (var3 == 4) {
  347.          NodeList var4 = this.nodeset();
  348.          NodeList var5 = ((XNodeSet)var1).nodeset();
  349.          int var6 = var4.getLength();
  350.          int var7 = var5.getLength();
  351.  
  352.          for(int var8 = 0; var8 < var6; ++var8) {
  353.             String var9 = getStringFromNode(var4.item(var8));
  354.  
  355.             for(int var10 = 0; var10 < var7; ++var10) {
  356.                String var11 = getStringFromNode(var5.item(var10));
  357.                if (var9.compareTo(var11) >= 0) {
  358.                   var2 = true;
  359.                   break;
  360.                }
  361.             }
  362.          }
  363.       } else if (var3 == 1) {
  364.          double var12 = this.bool() ? (double)1.0F : (double)0.0F;
  365.          double var18 = var1.num();
  366.          var2 = var12 >= var18;
  367.       } else if (var3 == 2) {
  368.          NodeList var13 = this.nodeset();
  369.          int var16 = var13.getLength();
  370.          double var19 = var1.num();
  371.  
  372.          for(int var26 = 0; var26 < var16; ++var26) {
  373.             double var30 = this.getNumberFromNode(var13.item(var26));
  374.             if (var30 >= var19) {
  375.                var2 = true;
  376.                break;
  377.             }
  378.          }
  379.       } else if (var3 == 5) {
  380.          double var14 = var1.num();
  381.          if (var14 != Double.NaN) {
  382.             NodeList var20 = this.nodeset();
  383.             int var23 = var20.getLength();
  384.  
  385.             for(int var27 = 0; var27 < var23; ++var27) {
  386.                double var31 = this.getNumberFromNode(var20.item(var27));
  387.                if (var31 >= var14) {
  388.                   var2 = true;
  389.                   break;
  390.                }
  391.             }
  392.          } else {
  393.             NodeList var21 = this.nodeset();
  394.             int var24 = var21.getLength();
  395.             String var28 = var1.str();
  396.  
  397.             for(int var32 = 0; var32 < var24; ++var32) {
  398.                String var33 = getStringFromNode(var21.item(var32));
  399.                if (var33.compareTo(var28) >= 0) {
  400.                   var2 = true;
  401.                   break;
  402.                }
  403.             }
  404.          }
  405.       } else if (var3 == 3) {
  406.          NodeList var15 = this.nodeset();
  407.          int var17 = var15.getLength();
  408.          String var22 = var1.str();
  409.  
  410.          for(int var25 = 0; var25 < var17; ++var25) {
  411.             String var29 = getStringFromNode(var15.item(var25));
  412.             if (var29.compareTo(var22) >= 0) {
  413.                var2 = true;
  414.                break;
  415.             }
  416.          }
  417.       } else {
  418.          var2 = this.num() >= var1.num();
  419.       }
  420.  
  421.       return var2;
  422.    }
  423.  
  424.    public boolean equals(XObject var1) throws SAXException {
  425.       boolean var2 = false;
  426.       int var3 = var1.getType();
  427.       if (var3 == 4) {
  428.          NodeList var4 = this.nodeset();
  429.          NodeList var5 = ((XNodeSet)var1).nodeset();
  430.          int var6 = var4.getLength();
  431.          int var7 = var5.getLength();
  432.  
  433.          for(int var8 = 0; var8 < var6; ++var8) {
  434.             String var9 = getStringFromNode(var4.item(var8));
  435.  
  436.             for(int var10 = 0; var10 < var7; ++var10) {
  437.                String var11 = getStringFromNode(var5.item(var10));
  438.                if (var11.equals(var9)) {
  439.                   var2 = true;
  440.                   break;
  441.                }
  442.             }
  443.          }
  444.       } else if (var3 == 1) {
  445.          var2 = this.bool() == var1.bool();
  446.       } else if (var3 == 2) {
  447.          NodeList var12 = this.nodeset();
  448.          int var15 = var12.getLength();
  449.          double var18 = var1.num();
  450.  
  451.          for(int var23 = 0; var23 < var15; ++var23) {
  452.             double var26 = this.getNumberFromNode(var12.item(var23));
  453.             if (var26 == var18) {
  454.                var2 = true;
  455.                break;
  456.             }
  457.          }
  458.       } else if (var3 == 5) {
  459.          NodeList var13 = this.nodeset();
  460.          int var16 = var13.getLength();
  461.          String var19 = var1.str();
  462.  
  463.          for(int var21 = 0; var21 < var16; ++var21) {
  464.             String var24 = getStringFromNode(var13.item(var21));
  465.             if (var24.equals(var19)) {
  466.                var2 = true;
  467.                break;
  468.             }
  469.          }
  470.       } else if (var3 == 3) {
  471.          NodeList var14 = this.nodeset();
  472.          int var17 = var14.getLength();
  473.          String var20 = var1.str();
  474.  
  475.          for(int var22 = 0; var22 < var17; ++var22) {
  476.             String var25 = getStringFromNode(var14.item(var22));
  477.             if (var25.equals(var20)) {
  478.                var2 = true;
  479.                break;
  480.             }
  481.          }
  482.       } else {
  483.          var2 = super.equals(var1);
  484.       }
  485.  
  486.       return var2;
  487.    }
  488.  
  489.    public boolean notEquals(XObject var1) throws SAXException {
  490.       boolean var2 = false;
  491.       int var3 = var1.getType();
  492.       if (var3 == 4) {
  493.          NodeList var4 = this.nodeset();
  494.          NodeList var5 = ((XNodeSet)var1).nodeset();
  495.          int var6 = var4.getLength();
  496.          int var7 = var5.getLength();
  497.  
  498.          for(int var8 = 0; var8 < var6; ++var8) {
  499.             String var9 = getStringFromNode(var4.item(var8));
  500.  
  501.             for(int var10 = 0; var10 < var7; ++var10) {
  502.                String var11 = getStringFromNode(var5.item(var10));
  503.                if (!var11.equals(var9)) {
  504.                   var2 = true;
  505.                   break;
  506.                }
  507.             }
  508.          }
  509.       } else if (var3 == 1) {
  510.          var2 = this.bool() != var1.bool();
  511.       } else if (var3 == 2) {
  512.          NodeList var12 = this.nodeset();
  513.          int var15 = var12.getLength();
  514.          double var18 = var1.num();
  515.  
  516.          for(int var23 = 0; var23 < var15; ++var23) {
  517.             double var26 = this.getNumberFromNode(var12.item(var23));
  518.             if (var26 != var18) {
  519.                var2 = true;
  520.                break;
  521.             }
  522.          }
  523.       } else if (var3 == 5) {
  524.          NodeList var13 = this.nodeset();
  525.          int var16 = var13.getLength();
  526.          String var19 = var1.str();
  527.  
  528.          for(int var21 = 0; var21 < var16; ++var21) {
  529.             String var24 = getStringFromNode(var13.item(var21));
  530.             if (!var24.equals(var19)) {
  531.                var2 = true;
  532.                break;
  533.             }
  534.          }
  535.       } else if (var3 == 3) {
  536.          NodeList var14 = this.nodeset();
  537.          int var17 = var14.getLength();
  538.          String var20 = var1.str();
  539.  
  540.          for(int var22 = 0; var22 < var17; ++var22) {
  541.             String var25 = getStringFromNode(var14.item(var22));
  542.             if (!var25.equals(var20)) {
  543.                var2 = true;
  544.                break;
  545.             }
  546.          }
  547.       } else {
  548.          var2 = super.notEquals(var1);
  549.       }
  550.  
  551.       return var2;
  552.    }
  553. }
  554.